package cn.kent.base.createThread;

/**
 * 线程创建方式有三种：
 * 1.继承Thread并重写run方法
 *      继承的好处：获取当前线程直接使用this，无需使用 Thread.currentThread()方法
 *      继承的缺点：1.Java不支持多继承，继承了Thread就无法继承其他类。
 *                2.任务和代码没有分离，当多个线程需要执行同一个任务时需要多份任务代码，而Runnable没有这个限制
 *                3.没有返回值
 * 2.实现Runnable接口的run方法
 *      优点：多个线程可公用一个task代码逻辑，如果需要，可以给RunnableTask添加参数进行任务区分
 *      缺点： 没有返回值
 * 3.使用FutureTask方式
 *      优点：有返回值
 */
public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("I am a child thread.");
    }

    public static void main(String[] args) {
        // 创建线程
        MyThread myThread = new MyThread();

        // 启动线程
        myThread.start();

        // start之后其实并没有马上执行，而是处于就绪状态(已经获取了除CPU资源外的所有资源)
        // 等待获取CPU资源开始执行，执行完毕后处于 终止状态
    }
}
